vs2008多线程调试[vs2019多线程调试] 您所在的位置:网站首页 ogre exampleapplication vs2008多线程调试[vs2019多线程调试]

vs2008多线程调试[vs2019多线程调试]

2023-04-08 00:33| 来源: 网络整理| 查看: 265

求OGRE1.7.4在VS2008下的配置方式

一.安装VS2008。

二.安装VS2008SP1,一定要装哦

三.安装OgreSDK。对应VS2008的.

四.打开VS2008,新建项目Example,添加源文件Example.cpp

五.设置IDE环境(步骤如下)

调试-->工作目录为"..\OgreSDK\bin\debug"(这里有使Ogre能正常工作的dll);

C/C++-->常规-->附加包含目录中加三个目录:("..\OgreSDK\Project\Example\include""..\OgreSDK\include""..\OgreSDK\samples\include");

C/C++-->代码生成-->运行时库"为"多线程调试 DLL (/MDd)"(这个好像是默认的);

链接器-->常规-->输出文件为"..\OgreSDK\bin\debug\$(ProjectName).exe" ;

链接器-->常规-->附加库目录中添加"..\OgreSDK\lib";

链接器-->输入-->附加依赖项中添加"OgreMain_d.lib"和"OIS_d.lib"(如果是Release版则添加"OgreMain.lib"和"OIS.lib")

六.添加以下代码:

#include "ExampleApplication.h"

class MyApplication : public ExampleApplication

{

protected:

public:

MyApplication()

{

}

~MyApplication()

{

}

protected:

void createScene(void)

{

}

};

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

#define WIN32_LEAN_AND_MEAN

#include "windows.h"

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )

#else

int main(int argc, char **argv)

#endif

{

// Create application object

MyApplication app;

try {

app.go();

} catch( Exception e ) {

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

MessageBoxA( NULL, e.getFullDescription().c_str(), "An exception has occurred!", MB_OK | MB_ICONERROR | MB_TASKMODAL);

#else

fprintf(stderr, "An exception has occurred: %s ",

e.getFullDescription().c_str());

#endif

}

return 0;

}

七.If you get an Ogre Exception which complains about being unable to load a dynamic plugin then go to ..\OgreSDK\bin\debug\Plugins.cfg and take out the following lines..

(去..\OgreSDK\bin\debug\Plugins.cfg删除以下行并保存):

Plugin=Plugin_PCZSceneManager_d.dll Plugin=Plugin_OctreeZone_d.dll

八.开始执行,exe文件会在"..\OgreSDK\bin\debug\Example.exe"。

运行结果为带ogre的logo黑屏

又是VS2008 (vc++)问题 多线程的

CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,

LPVOID pParam,

int nPriority = THREAD_PRIORITY_NORMAL,

UINT nStackSize = 0,

DWORD dwCreateFlags = 0,

LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL

);//用于创建工作者线程

返回值: 一个指向新线程的线程对象

pfnThreadProc : 线程的入口函数,声明一定要如下: UINT MyThreadFunction( LPVOID pParam );

因为类的成员函数依赖于对象,成员函数都有个隐含的this指针,所以当做全局函数调用时会出错。

[img]VS 多线程调试和多线程DLL调试有什么区别

区别是动态链接还是静态链接C运行时库(C runtime Library, CRT)。

如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。

如果是静态链接(MT/MTD),C运行库直接链接到你的程序里,你的程序就不依赖C运行时库的dll了。

微软是推荐是用动态链接的,因为这种链接方式可以减少可执行文件的大小、可以减少内存的使用、避免链接问题。

关于vs2008多线程调试和vs2019多线程调试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有